iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
AI/ ML & Data

自動交易程式探索系列 第 16

Day 16 - 使用FinRL訓練美股S&P500盤內一小時框數據

  • 分享至 

  • xImage
  •  

昨天儲存完的一小時數據可以開始使用FinRL的初始範例來訓練自動交易策略。

讀取資料時,由於FinRL需要設定factorize的index,這邊我借用了已經寫好的data_split(...)來讓traintrade的index符合使用規則:

def main():
    INIT_AMOUNT = 1000000
    TRAIN_START_DATE = '2019-09-21'
    TRAIN_END_DATE = '2023-12-01'
    TRADE_START_DATE = '2024-01-01'
    TRADE_END_DATE = '2024-09-21'

    train = pd.read_csv("sp500_1hour_2019-09-21_2024-01-01_train.csv")
    trade = pd.read_csv("sp500_1hour_2024-01-01_2024-09-21_trade.csv")
    processed_full = pd.concat([train, trade], ignore_index=True)

    train = data_split(processed_full, TRAIN_START_DATE, TRAIN_END_DATE)
    trade = data_split(processed_full, TRADE_START_DATE, TRADE_END_DATE)
    
    ......

之後的步驟就和先前的範例一致,先訓練DRL模型
train_drl(e_train_gym, models_info)

然而,目前訓練到現在還不到一半,由於FinRL訓練程式碼沒有充分利用CPU與GPU,導致訓練速度緩慢,在這樣的數據量下,可能要跑十幾個小時以上都不一定能好。
再加上之後我想嘗試的是使用日內數據來訓練DRL做自動交易,而FinRLElegantRL的範例大多都是使用美股日線資料;因此我明天會花一些時間調研看有沒有更合適的開源專案可以使用,如果有找到的話,傾向於直接使用專門用來訓練日內數據的程式碼來學習,來縮短學習成本。

def main():
    ......
    # Step 3: Train DRL Models
    # Initialize StockTradingEnv for training
    stock_dimension = len(train.tic.unique())
    state_space = 1 + 2 * stock_dimension + len(INDICATORS) * stock_dimension
    print(f"Stock Dimension: {stock_dimension}, State Space: {state_space}")

    buy_cost_list = sell_cost_list = [0.001] * stock_dimension
    num_stock_shares = [0] * stock_dimension

    env_kwargs = {
        "hmax": 100,
        "initial_amount": INIT_AMOUNT,
        "num_stock_shares": num_stock_shares,
        "buy_cost_pct": buy_cost_list,
        "sell_cost_pct": sell_cost_list,
        "state_space": state_space,
        "stock_dim": stock_dimension,
        "tech_indicator_list": INDICATORS,
        "action_space": stock_dimension,
        "reward_scaling": 1e-4
    }

    e_train_gym = StockTradingEnv(df=train, **env_kwargs)

    # Train models
    trained_models = train_drl(e_train_gym, models_info)

上一篇
Day 15 - 美股S&P500盤內一小時框數據後處理及對齊
下一篇
Day 17 - S&P500一小時數據訓練結果回測
系列文
自動交易程式探索30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言